A script for zooplankton community analysis using genus level aggregation of the NPS dataset.
library(tidyverse)
library(readxl)
library(vegan)
library(labdsv)
library(kableExtra)
library(viridis)
library(visdat)
library(corrplot)
library(psych)
library(ggvegan)
library(janitor)
library(ggpubr)
bigjoin <- readRDS(file = "../data/analysis_outputs/bigjoin.rds")
zoop <- read_excel("../data/NCCN_Zoops_Combined_For_FCA_May_2019.xlsx")
## Warning in read_fun(path = enc2native(normalizePath(path)), sheet_i = sheet, :
## Expecting numeric in I1488 / R1488C9: got 'Collotheca pelagica'
# Prep data
zoop[1487, "Taxa"] <- "ROT"
zoop[1487, "Taxonid"] <- 5
# Name matching table
match_sites <- readRDS(file = file.path("..",
"data",
"name_site_matches.rds"))
# Crosswalk common names for sites to site_codes
zoop <- left_join(x = zoop, y = match_sites,
by = c("Lake" = "old_name")) %>%
clean_names()
# Remove copepodites and nauplii from the dataset per MM suggestion
zoop_orig <- zoop
zoop <- zoop %>%
filter(!grepl(pattern = "copepodite", x = gen_sp),
!grepl(pattern = "nauplii", x = gen_sp),
taxa != "INS", taxa != "HAR",
gen_sp != "No zooplankton detected",
gen_sp != "immature Daphnia")
# Remove things that don't have genus level ID. Then create genus column
zoop <- zoop %>%
filter(!(gen_sp %in% c("small sp.", "Chaoborus", "mosquito pupae",
"harpacticoid", "chydorid"))) %>%
separate(col = gen_sp, into = c("genus", "species"), sep = " ") %>%
mutate(genus = if_else(condition = genus == "Conochilius",
true = "Conochilus", false = genus))
I turn the density measurements into proportions of each taxon per sample. Then filter out genera providing <= 5% of every sample before making into a matrix.
# Drop genera that are less or equal to than 5% of ANY sample. So if they ever
# are a large enough proportion of a sample that genera is kept through the
# entire dataset.
zoop_five <- zoop %>%
# Dropping Code for now b/c unclear what it means. Code != Taxa though.
# Also dropping taxonid
group_by(park, lake, site_code, year, genus) %>%
summarise(density = sum(density)) %>%
group_by(park, site_code, year) %>%
mutate(sum_density = sum(density, na.rm = T)) %>%
ungroup() %>%
mutate(prop_density = density / sum_density) %>%
group_by(genus) %>%
summarize(max_prop = max(prop_density)) %>%
filter(max_prop <= 0.05)
# Use that dataset to filter out things that don't match up
zoop_reduced <- anti_join(x = zoop, y = zoop_five, by = c("genus")) %>%
group_by(park, site_code, year, genus) %>%
summarise(density = sum(density))
# Break the datset into separate data frames for each season and make community
# matrices for each. Add a row identifier column, then turn into matrix
zoop_comm_matrix <- map(.x = unique(zoop_reduced$site_code),
.f = ~ zoop_reduced %>%
filter(site_code == .x) %>%
mutate(park_site_year = paste0(park, "_", site_code, "_", year)) %>%
ungroup() %>%
select(park_site_year, genus, density) %>%
data.frame() %>%
matrify())
nmds_2 <- map(.x = zoop_comm_matrix,
.f = ~ metaMDS(comm = .x,
distance = "bray", k = 2, trymax = 100))
## Warning in metaMDS(comm = .x, distance = "bray", k = 2, trymax = 100): stress is
## (nearly) zero: you may have insufficient data
## Warning in metaMDS(comm = .x, distance = "bray", k = 2, trymax = 100): stress is
## (nearly) zero: you may have insufficient data
## Warning in metaMDS(comm = .x, distance = "bray", k = 2, trymax = 100): stress is
## (nearly) zero: you may have insufficient data
## Warning in metaMDS(comm = .x, distance = "bray", k = 2, trymax = 100): stress is
## (nearly) zero: you may have insufficient data
How many of these converged?
map_lgl(.x = nmds_2,
.f = ~ .x$converged) %>% sum()
## [1] 19
## [[1]]
##
## [[2]]
##
## [[3]]
##
## [[4]]
##
## [[5]]
##
## [[6]]
##
## [[7]]
##
## [[8]]
##
## [[9]]
##
## [[10]]
##
## [[11]]
##
## [[12]]
##
## [[13]]
##
## [[14]]
##
## [[15]]
##
## [[16]]
##
## [[17]]
##
## [[18]]
##
## [[19]]
##
## [[20]]
##
## [[21]]
zoops_comm_ids <- map(.x = zoop_comm_matrix,
.f = ~ rownames_to_column(.x) %>%
separate(col = rowname, into = c("park", "site", "year"), sep = "_"))
# Get a vector of possible genus names
genus_names <- zoop_reduced$genus %>% unique()
zoop_permanova <- map(.x = zoops_comm_ids,
.f = ~ {
genus_data <- .x %>%
select(any_of(genus_names))
env_data <- .x %>%
select(year, site, park)
adonis(formula = genus_data ~
year,
data = env_data, method = "bray")
}
)
zoop_permanova
## [[1]]
##
## Call:
## adonis(formula = genus_data ~ year, data = env_data, method = "bray")
##
## Permutation: free
## Number of permutations: 999
##
## Terms added sequentially (first to last)
##
## Df SumsOfSqs MeanSqs F.Model R2 Pr(>F)
## year 9 1.8158 0 0 1 1
## Residuals 0 0.0000 Inf 0
## Total 9 1.8158 1
##
## [[2]]
##
## Call:
## adonis(formula = genus_data ~ year, data = env_data, method = "bray")
##
## Permutation: free
## Number of permutations: 999
##
## Terms added sequentially (first to last)
##
## Df SumsOfSqs MeanSqs F.Model R2 Pr(>F)
## year 9 2.4156 0 0 1 1
## Residuals 0 0.0000 Inf 0
## Total 9 2.4156 1
##
## [[3]]
##
## Call:
## adonis(formula = genus_data ~ year, data = env_data, method = "bray")
##
## Permutation: free
## Number of permutations: 999
##
## Terms added sequentially (first to last)
##
## Df SumsOfSqs MeanSqs F.Model R2 Pr(>F)
## year 9 2.22 0 0 1 1
## Residuals 0 0.00 Inf 0
## Total 9 2.22 1
##
## [[4]]
##
## Call:
## adonis(formula = genus_data ~ year, data = env_data, method = "bray")
##
## Permutation: free
## Number of permutations: 999
##
## Terms added sequentially (first to last)
##
## Df SumsOfSqs MeanSqs F.Model R2 Pr(>F)
## year 9 1.3247 0 0 1 1
## Residuals 0 0.0000 Inf 0
## Total 9 1.3247 1
##
## [[5]]
##
## Call:
## adonis(formula = genus_data ~ year, data = env_data, method = "bray")
##
## Permutation: free
## Number of permutations: 999
##
## Terms added sequentially (first to last)
##
## Df SumsOfSqs MeanSqs F.Model R2 Pr(>F)
## year 9 2.7237 0 0 1 1
## Residuals 0 0.0000 Inf 0
## Total 9 2.7237 1
##
## [[6]]
##
## Call:
## adonis(formula = genus_data ~ year, data = env_data, method = "bray")
##
## Permutation: free
## Number of permutations: 999
##
## Terms added sequentially (first to last)
##
## Df SumsOfSqs MeanSqs F.Model R2 Pr(>F)
## year 9 1.8694 0 0 1 1
## Residuals 0 0.0000 -Inf 0
## Total 9 1.8694 1
##
## [[7]]
##
## Call:
## adonis(formula = genus_data ~ year, data = env_data, method = "bray")
##
## Permutation: free
## Number of permutations: 999
##
## Terms added sequentially (first to last)
##
## Df SumsOfSqs MeanSqs F.Model R2 Pr(>F)
## year 9 3.1835 0 0 1 1
## Residuals 0 0.0000 -Inf 0
## Total 9 3.1835 1
##
## [[8]]
##
## Call:
## adonis(formula = genus_data ~ year, data = env_data, method = "bray")
##
## Permutation: free
## Number of permutations: 999
##
## Terms added sequentially (first to last)
##
## Df SumsOfSqs MeanSqs F.Model R2 Pr(>F)
## year 9 2.7138 0 0 1 1
## Residuals 0 0.0000 -Inf 0
## Total 9 2.7138 1
##
## [[9]]
##
## Call:
## adonis(formula = genus_data ~ year, data = env_data, method = "bray")
##
## Permutation: free
## Number of permutations: 999
##
## Terms added sequentially (first to last)
##
## Df SumsOfSqs MeanSqs F.Model R2 Pr(>F)
## year 8 2.0417 0 0 1 1
## Residuals 0 0.0000 -Inf 0
## Total 8 2.0417 1
##
## [[10]]
##
## Call:
## adonis(formula = genus_data ~ year, data = env_data, method = "bray")
##
## Permutation: free
## Number of permutations: 999
##
## Terms added sequentially (first to last)
##
## Df SumsOfSqs MeanSqs F.Model R2 Pr(>F)
## year 9 2.3747 0 0 1 1
## Residuals 0 0.0000 -Inf 0
## Total 9 2.3747 1
##
## [[11]]
##
## Call:
## adonis(formula = genus_data ~ year, data = env_data, method = "bray")
##
## Permutation: free
## Number of permutations: 999
##
## Terms added sequentially (first to last)
##
## Df SumsOfSqs MeanSqs F.Model R2 Pr(>F)
## year 9 2.7352 0 0 1 1
## Residuals 0 0.0000 Inf 0
## Total 9 2.7352 1
##
## [[12]]
##
## Call:
## adonis(formula = genus_data ~ year, data = env_data, method = "bray")
##
## Permutation: free
## Number of permutations: 999
##
## Terms added sequentially (first to last)
##
## Df SumsOfSqs MeanSqs F.Model R2 Pr(>F)
## year 9 2.3478 0 0 1 1
## Residuals 0 0.0000 -Inf 0
## Total 9 2.3478 1
##
## [[13]]
##
## Call:
## adonis(formula = genus_data ~ year, data = env_data, method = "bray")
##
## Permutation: free
## Number of permutations: 999
##
## Terms added sequentially (first to last)
##
## Df SumsOfSqs MeanSqs F.Model R2 Pr(>F)
## year 8 3.2384 0 0 1 1
## Residuals 0 0.0000 -Inf 0
## Total 8 3.2384 1
##
## [[14]]
##
## Call:
## adonis(formula = genus_data ~ year, data = env_data, method = "bray")
##
## Permutation: free
## Number of permutations: 999
##
## Terms added sequentially (first to last)
##
## Df SumsOfSqs MeanSqs F.Model R2 Pr(>F)
## year 9 2.7767 0 0 1 1
## Residuals 0 0.0000 -Inf 0
## Total 9 2.7767 1
##
## [[15]]
##
## Call:
## adonis(formula = genus_data ~ year, data = env_data, method = "bray")
##
## Permutation: free
## Number of permutations: 999
##
## Terms added sequentially (first to last)
##
## Df SumsOfSqs MeanSqs F.Model R2 Pr(>F)
## year 7 2.6357 0 0 1 1
## Residuals 0 0.0000 -Inf 0
## Total 7 2.6357 1
##
## [[16]]
##
## Call:
## adonis(formula = genus_data ~ year, data = env_data, method = "bray")
##
## Permutation: free
## Number of permutations: 999
##
## Terms added sequentially (first to last)
##
## Df SumsOfSqs MeanSqs F.Model R2 Pr(>F)
## year 8 2.581 0 0 1 1
## Residuals 0 0.000 -Inf 0
## Total 8 2.581 1
##
## [[17]]
##
## Call:
## adonis(formula = genus_data ~ year, data = env_data, method = "bray")
##
## Permutation: free
## Number of permutations: 999
##
## Terms added sequentially (first to last)
##
## Df SumsOfSqs MeanSqs F.Model R2 Pr(>F)
## year 9 2.9996 0 0 1 1
## Residuals 0 0.0000 -Inf 0
## Total 9 2.9996 1
##
## [[18]]
##
## Call:
## adonis(formula = genus_data ~ year, data = env_data, method = "bray")
##
## Permutation: free
## Number of permutations: 999
##
## Terms added sequentially (first to last)
##
## Df SumsOfSqs MeanSqs F.Model R2 Pr(>F)
## year 7 1.7212 0 0 1 1
## Residuals 0 0.0000 Inf 0
## Total 7 1.7212 1
##
## [[19]]
##
## Call:
## adonis(formula = genus_data ~ year, data = env_data, method = "bray")
##
## Permutation: free
## Number of permutations: 999
##
## Terms added sequentially (first to last)
##
## Df SumsOfSqs MeanSqs F.Model R2 Pr(>F)
## year 9 2.9616 0 0 1 1
## Residuals 0 0.0000 -Inf 0
## Total 9 2.9616 1
##
## [[20]]
##
## Call:
## adonis(formula = genus_data ~ year, data = env_data, method = "bray")
##
## Permutation: free
## Number of permutations: 999
##
## Terms added sequentially (first to last)
##
## Df SumsOfSqs MeanSqs F.Model R2 Pr(>F)
## year 9 3.1155 0 0 1 1
## Residuals 0 0.0000 Inf 0
## Total 9 3.1155 1
##
## [[21]]
##
## Call:
## adonis(formula = genus_data ~ year, data = env_data, method = "bray")
##
## Permutation: free
## Number of permutations: 999
##
## Terms added sequentially (first to last)
##
## Df SumsOfSqs MeanSqs F.Model R2 Pr(>F)
## year 9 2.6843 0 0 1 1
## Residuals 0 0.0000 Inf 0
## Total 9 2.6843 1
vegan::capscale()/dbRDA() documentation: Distance-based redundancy analysis (dbRDA) is an ordination method similar to Redundancy Analysis (rda), but it allows non-Euclidean dissimilarity indices, such as Manhattan or Bray–Curtis distance. Despite this non-Euclidean feature, the analysis is strictly linear and metric. If called with Euclidean distance, the results are identical to rda, but dbRDA will be less efficient. Functions capscale and dbrda are constrained versions of metric scaling, a.k.a. principal coordinates analysis, which are based on the Euclidean distance but can be used, and are more useful, with other dissimilarity measures. The functions can also perform unconstrained principal coordinates analysis, optionally using extended dissimilarities.
zoops_comm_ids <- map(.x = zoops_comm_ids,
.f = ~ .x %>%
mutate(year = as.numeric(year)))
yearly_bigjoin <- bigjoin %>%
filter(variable %in% c("secchi_value_m", "AirTemp", "BotTemp",
"MidTemp", "SurfTemp", "DO_top2m")) %>%
select(park_code, site_code, event_year, variable, value) %>%
unique() %>%
spread(key = variable, value = value)
# Join the zoops to yearly_bigjoin bc some data will be NA: both datasets
# should have corresponding rows
yearly_bigjoin_zoop <- map(.x = zoops_comm_ids,
.f = ~ inner_join(x = .x, y = yearly_bigjoin,
by = c("park" = "park_code",
"site" = "site_code",
"year" = "event_year")))
map(.x = yearly_bigjoin_zoop,
.f = ~ vis_dat(x = .x))
## [[1]]
##
## [[2]]
##
## [[3]]
##
## [[4]]
##
## [[5]]
##
## [[6]]
##
## [[7]]
##
## [[8]]
##
## [[9]]
##
## [[10]]
##
## [[11]]
##
## [[12]]
##
## [[13]]
##
## [[14]]
##
## [[15]]
##
## [[16]]
##
## [[17]]
##
## [[18]]
##
## [[19]]
##
## [[20]]
##
## [[21]]
Now look at env variable correlations, but first check for and remove NAs
# Down some rows after removing NAs...
yearly_bigjoin_zoop <- map(.x = yearly_bigjoin_zoop, .f = ~ na.omit(.x))
# Hoh lake has a lot of NAs. Drop it for now
yearly_bigjoin_zoop <- yearly_bigjoin_zoop[-21]
map(.x = yearly_bigjoin_zoop,
.f = ~ corrplot(cor(select(.x, AirTemp:SurfTemp)), type = "upper",
tl.col = "black", tl.srt = 45))
## [[1]]
## AirTemp BotTemp DO_top2m MidTemp secchi_value_m
## AirTemp 1.0000000 0.3394223 0.6490009 -0.3235324 -0.77571207
## BotTemp 0.3394223 1.0000000 0.2273300 0.3561254 -0.59779372
## DO_top2m 0.6490009 0.2273300 1.0000000 -0.7896367 -0.31943672
## MidTemp -0.3235324 0.3561254 -0.7896367 1.0000000 -0.22780423
## secchi_value_m -0.7757121 -0.5977937 -0.3194367 -0.2278042 1.00000000
## SurfTemp -0.4331750 0.1684026 -0.0567702 0.2777465 -0.07238371
## SurfTemp
## AirTemp -0.43317496
## BotTemp 0.16840264
## DO_top2m -0.05677020
## MidTemp 0.27774648
## secchi_value_m -0.07238371
## SurfTemp 1.00000000
##
## [[2]]
## AirTemp BotTemp DO_top2m MidTemp secchi_value_m
## AirTemp 1.0000000 -0.1882326 0.36252345 -0.22146854 -0.2875040
## BotTemp -0.1882326 1.0000000 0.43397660 0.44099751 -0.7369086
## DO_top2m 0.3625234 0.4339766 1.00000000 0.09647848 -0.6458110
## MidTemp -0.2214685 0.4409975 0.09647848 1.00000000 -0.6917529
## secchi_value_m -0.2875040 -0.7369086 -0.64581100 -0.69175292 1.0000000
## SurfTemp -0.1557132 0.2949109 -0.49092564 0.70674723 -0.3460686
## SurfTemp
## AirTemp -0.1557132
## BotTemp 0.2949109
## DO_top2m -0.4909256
## MidTemp 0.7067472
## secchi_value_m -0.3460686
## SurfTemp 1.0000000
##
## [[3]]
## AirTemp BotTemp DO_top2m MidTemp secchi_value_m
## AirTemp 1.0000000 0.3561007 0.4551107 0.4605472 -0.4073878
## BotTemp 0.3561007 1.0000000 -0.4902700 0.9662560 -0.3997617
## DO_top2m 0.4551107 -0.4902700 1.0000000 -0.3630927 -0.1362918
## MidTemp 0.4605472 0.9662560 -0.3630927 1.0000000 -0.4536063
## secchi_value_m -0.4073878 -0.3997617 -0.1362918 -0.4536063 1.0000000
## SurfTemp 0.8528200 0.3639152 0.4842285 0.5539619 -0.4632126
## SurfTemp
## AirTemp 0.8528200
## BotTemp 0.3639152
## DO_top2m 0.4842285
## MidTemp 0.5539619
## secchi_value_m -0.4632126
## SurfTemp 1.0000000
##
## [[4]]
## AirTemp BotTemp DO_top2m MidTemp secchi_value_m
## AirTemp 1.00000000 -0.06817328 -0.44093755 -0.2760950 0.25203782
## BotTemp -0.06817328 1.00000000 -0.08578537 0.9381664 -0.54483619
## DO_top2m -0.44093755 -0.08578537 1.00000000 -0.1359749 -0.65695313
## MidTemp -0.27609502 0.93816636 -0.13597489 1.0000000 -0.40086069
## secchi_value_m 0.25203782 -0.54483619 -0.65695313 -0.4008607 1.00000000
## SurfTemp 0.81346437 0.42294687 -0.51813760 0.1762759 -0.03582421
## SurfTemp
## AirTemp 0.81346437
## BotTemp 0.42294687
## DO_top2m -0.51813760
## MidTemp 0.17627595
## secchi_value_m -0.03582421
## SurfTemp 1.00000000
##
## [[5]]
## AirTemp BotTemp DO_top2m MidTemp secchi_value_m
## AirTemp 1.0000000 0.6008694 -0.5157299 0.67461836 0.10030860
## BotTemp 0.6008694 1.0000000 -0.1508043 0.99264637 -0.11412096
## DO_top2m -0.5157299 -0.1508043 1.0000000 -0.24332580 -0.58214002
## MidTemp 0.6746184 0.9926464 -0.2433258 1.00000000 -0.02954338
## secchi_value_m 0.1003086 -0.1141210 -0.5821400 -0.02954338 1.00000000
## SurfTemp 0.6579026 0.9810657 -0.2059878 0.98651974 -0.04531095
## SurfTemp
## AirTemp 0.65790257
## BotTemp 0.98106567
## DO_top2m -0.20598775
## MidTemp 0.98651974
## secchi_value_m -0.04531095
## SurfTemp 1.00000000
##
## [[6]]
## AirTemp BotTemp DO_top2m MidTemp secchi_value_m
## AirTemp 1.00000000 0.03074935 -0.5547454 -0.08730125 0.1983498
## BotTemp 0.03074935 1.00000000 -0.4959424 0.70951429 -0.8594089
## DO_top2m -0.55474538 -0.49594243 1.0000000 0.15063655 0.1221200
## MidTemp -0.08730125 0.70951429 0.1506366 1.00000000 -0.7187063
## secchi_value_m 0.19834983 -0.85940889 0.1221200 -0.71870627 1.0000000
## SurfTemp 0.11273522 0.63845708 0.1370694 0.97142581 -0.6573330
## SurfTemp
## AirTemp 0.1127352
## BotTemp 0.6384571
## DO_top2m 0.1370694
## MidTemp 0.9714258
## secchi_value_m -0.6573330
## SurfTemp 1.0000000
##
## [[7]]
## AirTemp BotTemp DO_top2m MidTemp secchi_value_m
## AirTemp 1.0000000 0.6966915 -0.58133512 0.6782162 0.67644094
## BotTemp 0.6966915 1.0000000 -0.59253991 0.9962845 0.50371207
## DO_top2m -0.5813351 -0.5925399 1.00000000 -0.5947180 -0.07330771
## MidTemp 0.6782162 0.9962845 -0.59471799 1.0000000 0.51290382
## secchi_value_m 0.6764409 0.5037121 -0.07330771 0.5129038 1.00000000
## SurfTemp 0.7207107 0.9979681 -0.60743337 0.9955800 0.51858592
## SurfTemp
## AirTemp 0.7207107
## BotTemp 0.9979681
## DO_top2m -0.6074334
## MidTemp 0.9955800
## secchi_value_m 0.5185859
## SurfTemp 1.0000000
##
## [[8]]
## AirTemp BotTemp DO_top2m MidTemp secchi_value_m
## AirTemp 1.0000000 0.2720673 0.5146456 0.3359120 0.53832611
## BotTemp 0.2720673 1.0000000 -0.1992734 0.9959504 -0.35471161
## DO_top2m 0.5146456 -0.1992734 1.0000000 -0.1408529 0.69834147
## MidTemp 0.3359120 0.9959504 -0.1408529 1.0000000 -0.32833592
## secchi_value_m 0.5383261 -0.3547116 0.6983415 -0.3283359 1.00000000
## SurfTemp 0.6172556 0.8694185 0.1832488 0.9066692 -0.06765919
## SurfTemp
## AirTemp 0.61725560
## BotTemp 0.86941845
## DO_top2m 0.18324880
## MidTemp 0.90666919
## secchi_value_m -0.06765919
## SurfTemp 1.00000000
##
## [[9]]
## AirTemp BotTemp DO_top2m MidTemp secchi_value_m
## AirTemp 1.0000000 0.6610029 -0.2085093 0.6730841 -0.6690738
## BotTemp 0.6610029 1.0000000 -0.2267569 0.9996744 -0.3006007
## DO_top2m -0.2085093 -0.2267569 1.0000000 -0.2384768 0.2626871
## MidTemp 0.6730841 0.9996744 -0.2384768 1.0000000 -0.3167240
## secchi_value_m -0.6690738 -0.3006007 0.2626871 -0.3167240 1.0000000
## SurfTemp 0.7329144 0.9935629 -0.2484490 0.9948379 -0.3364885
## SurfTemp
## AirTemp 0.7329144
## BotTemp 0.9935629
## DO_top2m -0.2484490
## MidTemp 0.9948379
## secchi_value_m -0.3364885
## SurfTemp 1.0000000
##
## [[10]]
## AirTemp BotTemp DO_top2m MidTemp secchi_value_m
## AirTemp 1.0000000 0.6965840 -0.4081062 0.72467996 -0.30493873
## BotTemp 0.6965840 1.0000000 -0.3805352 0.99304252 0.17994204
## DO_top2m -0.4081062 -0.3805352 1.0000000 -0.31863585 -0.40283782
## MidTemp 0.7246800 0.9930425 -0.3186359 1.00000000 0.09381385
## secchi_value_m -0.3049387 0.1799420 -0.4028378 0.09381385 1.00000000
## SurfTemp 0.8797300 0.9299361 -0.4883733 0.93439068 -0.04288533
## SurfTemp
## AirTemp 0.87973003
## BotTemp 0.92993613
## DO_top2m -0.48837333
## MidTemp 0.93439068
## secchi_value_m -0.04288533
## SurfTemp 1.00000000
##
## [[11]]
## AirTemp BotTemp DO_top2m MidTemp secchi_value_m
## AirTemp 1.0000000 0.82414896 0.14958172 0.82180880 -0.2485747151
## BotTemp 0.8241490 1.00000000 0.04216621 0.99625462 0.0663614210
## DO_top2m 0.1495817 0.04216621 1.00000000 0.04769347 -0.0583881920
## MidTemp 0.8218088 0.99625462 0.04769347 1.00000000 0.0623281039
## secchi_value_m -0.2485747 0.06636142 -0.05838819 0.06232810 1.0000000000
## SurfTemp 0.8413987 0.99480903 0.02491070 0.98567782 0.0002560108
## SurfTemp
## AirTemp 0.8413987021
## BotTemp 0.9948090306
## DO_top2m 0.0249107003
## MidTemp 0.9856778175
## secchi_value_m 0.0002560108
## SurfTemp 1.0000000000
##
## [[12]]
## AirTemp BotTemp DO_top2m MidTemp secchi_value_m
## AirTemp 1.00000000 0.05983431 0.04761661 0.2711388 -0.8611070
## BotTemp 0.05983431 1.00000000 -0.85422172 0.9550055 -0.3365825
## DO_top2m 0.04761661 -0.85422172 1.00000000 -0.8326285 0.2977850
## MidTemp 0.27113881 0.95500548 -0.83262852 1.0000000 -0.5873197
## secchi_value_m -0.86110704 -0.33658249 0.29778495 -0.5873197 1.0000000
## SurfTemp 0.67042372 0.76939954 -0.63578189 0.8648627 -0.7820548
## SurfTemp
## AirTemp 0.6704237
## BotTemp 0.7693995
## DO_top2m -0.6357819
## MidTemp 0.8648627
## secchi_value_m -0.7820548
## SurfTemp 1.0000000
##
## [[13]]
## AirTemp BotTemp DO_top2m MidTemp secchi_value_m
## AirTemp 1.00000000 -0.5784910 0.3292062 -0.6187757 -0.2138417
## BotTemp -0.57849099 1.0000000 -0.7358627 0.9682311 -0.4859191
## DO_top2m 0.32920625 -0.7358627 1.0000000 -0.7944361 0.5293876
## MidTemp -0.61877567 0.9682311 -0.7944361 1.0000000 -0.5677640
## secchi_value_m -0.21384174 -0.4859191 0.5293876 -0.5677640 1.0000000
## SurfTemp -0.03216646 0.8285395 -0.6688637 0.7841078 -0.8034888
## SurfTemp
## AirTemp -0.03216646
## BotTemp 0.82853948
## DO_top2m -0.66886372
## MidTemp 0.78410784
## secchi_value_m -0.80348876
## SurfTemp 1.00000000
##
## [[14]]
## AirTemp BotTemp DO_top2m MidTemp secchi_value_m
## AirTemp 1.0000000 0.2172796 -0.4255279 0.2314484 -0.6700547
## BotTemp 0.2172796 1.0000000 -0.2960307 0.9628128 -0.6807640
## DO_top2m -0.4255279 -0.2960307 1.0000000 -0.1944294 0.4245902
## MidTemp 0.2314484 0.9628128 -0.1944294 1.0000000 -0.6255423
## secchi_value_m -0.6700547 -0.6807640 0.4245902 -0.6255423 1.0000000
## SurfTemp 0.3981204 0.8585068 -0.1726839 0.9406230 -0.6290911
## SurfTemp
## AirTemp 0.3981204
## BotTemp 0.8585068
## DO_top2m -0.1726839
## MidTemp 0.9406230
## secchi_value_m -0.6290911
## SurfTemp 1.0000000
##
## [[15]]
## AirTemp BotTemp DO_top2m MidTemp secchi_value_m
## AirTemp 1.0000000 0.6916659 -0.4238254 0.6923555 -0.2435766
## BotTemp 0.6916659 1.0000000 -0.8685266 0.9928457 -0.1245621
## DO_top2m -0.4238254 -0.8685266 1.0000000 -0.8588978 -0.3100758
## MidTemp 0.6923555 0.9928457 -0.8588978 1.0000000 -0.1837680
## secchi_value_m -0.2435766 -0.1245621 -0.3100758 -0.1837680 1.0000000
## SurfTemp 0.7519022 0.9868282 -0.8638432 0.9885692 -0.1119818
## SurfTemp
## AirTemp 0.7519022
## BotTemp 0.9868282
## DO_top2m -0.8638432
## MidTemp 0.9885692
## secchi_value_m -0.1119818
## SurfTemp 1.0000000
##
## [[16]]
## AirTemp BotTemp DO_top2m MidTemp secchi_value_m
## AirTemp 1.00000000 0.33637997 -0.05443663 0.31038287 0.20090214
## BotTemp 0.33637997 1.00000000 -0.19794645 0.99860667 -0.02896344
## DO_top2m -0.05443663 -0.19794645 1.00000000 -0.17833583 -0.18445910
## MidTemp 0.31038287 0.99860667 -0.17833583 1.00000000 -0.03227263
## secchi_value_m 0.20090214 -0.02896344 -0.18445910 -0.03227263 1.00000000
## SurfTemp 0.44648848 0.96460597 -0.16720706 0.95411046 -0.02485056
## SurfTemp
## AirTemp 0.44648848
## BotTemp 0.96460597
## DO_top2m -0.16720706
## MidTemp 0.95411046
## secchi_value_m -0.02485056
## SurfTemp 1.00000000
##
## [[17]]
## AirTemp BotTemp DO_top2m MidTemp secchi_value_m
## AirTemp 1.0000000 0.5736989 -0.11862471 0.87221998 0.34251500
## BotTemp 0.5736989 1.0000000 -0.23168859 0.83108255 -0.29435797
## DO_top2m -0.1186247 -0.2316886 1.00000000 0.02379811 0.73027646
## MidTemp 0.8722200 0.8310826 0.02379811 1.00000000 0.15196935
## secchi_value_m 0.3425150 -0.2943580 0.73027646 0.15196935 1.00000000
## SurfTemp 0.8812357 0.8188609 -0.25008105 0.95477227 -0.04864216
## SurfTemp
## AirTemp 0.88123574
## BotTemp 0.81886093
## DO_top2m -0.25008105
## MidTemp 0.95477227
## secchi_value_m -0.04864216
## SurfTemp 1.00000000
##
## [[18]]
## AirTemp BotTemp DO_top2m MidTemp secchi_value_m
## AirTemp 1.0000000 0.2222408 0.3992079 0.4850513 -0.3072857
## BotTemp 0.2222408 1.0000000 -0.5111740 0.8697118 -0.6009414
## DO_top2m 0.3992079 -0.5111740 1.0000000 -0.3589220 -0.0473799
## MidTemp 0.4850513 0.8697118 -0.3589220 1.0000000 -0.5270385
## secchi_value_m -0.3072857 -0.6009414 -0.0473799 -0.5270385 1.0000000
## SurfTemp 0.5423080 0.8355835 -0.3143425 0.9966187 -0.5200557
## SurfTemp
## AirTemp 0.5423080
## BotTemp 0.8355835
## DO_top2m -0.3143425
## MidTemp 0.9966187
## secchi_value_m -0.5200557
## SurfTemp 1.0000000
##
## [[19]]
## AirTemp BotTemp DO_top2m MidTemp secchi_value_m
## AirTemp 1.0000000 0.6873453 -0.5918876 0.7038309 -0.4887182
## BotTemp 0.6873453 1.0000000 -0.2343895 0.9945055 -0.3183399
## DO_top2m -0.5918876 -0.2343895 1.0000000 -0.1907919 0.3812445
## MidTemp 0.7038309 0.9945055 -0.1907919 1.0000000 -0.3215412
## secchi_value_m -0.4887182 -0.3183399 0.3812445 -0.3215412 1.0000000
## SurfTemp 0.7755776 0.9549522 -0.1939870 0.9782545 -0.3829905
## SurfTemp
## AirTemp 0.7755776
## BotTemp 0.9549522
## DO_top2m -0.1939870
## MidTemp 0.9782545
## secchi_value_m -0.3829905
## SurfTemp 1.0000000
##
## [[20]]
## AirTemp BotTemp DO_top2m MidTemp secchi_value_m
## AirTemp 1.0000000 0.6641186 -0.5492348 0.6749201 -0.3139501
## BotTemp 0.6641186 1.0000000 -0.7326556 0.9993942 -0.7949223
## DO_top2m -0.5492348 -0.7326556 1.0000000 -0.7220181 0.4182035
## MidTemp 0.6749201 0.9993942 -0.7220181 1.0000000 -0.8039818
## secchi_value_m -0.3139501 -0.7949223 0.4182035 -0.8039818 1.0000000
## SurfTemp 0.7174139 0.9846594 -0.6947882 0.9885736 -0.7800586
## SurfTemp
## AirTemp 0.7174139
## BotTemp 0.9846594
## DO_top2m -0.6947882
## MidTemp 0.9885736
## secchi_value_m -0.7800586
## SurfTemp 1.0000000
# corr.test(x = select(yearly_bigjoin_zoop, AirTemp:SurfaceTemp))
How about keep SurfTemp, drop other temps?
map(.x = yearly_bigjoin_zoop,
.f = ~ corrplot(cor(select(.x, SurfTemp, DO_top2m, secchi_value_m)),
type = "upper", tl.col = "black", tl.srt = 45))
## [[1]]
## SurfTemp DO_top2m secchi_value_m
## SurfTemp 1.00000000 -0.0567702 -0.07238371
## DO_top2m -0.05677020 1.0000000 -0.31943672
## secchi_value_m -0.07238371 -0.3194367 1.00000000
##
## [[2]]
## SurfTemp DO_top2m secchi_value_m
## SurfTemp 1.0000000 -0.4909256 -0.3460686
## DO_top2m -0.4909256 1.0000000 -0.6458110
## secchi_value_m -0.3460686 -0.6458110 1.0000000
##
## [[3]]
## SurfTemp DO_top2m secchi_value_m
## SurfTemp 1.0000000 0.4842285 -0.4632126
## DO_top2m 0.4842285 1.0000000 -0.1362918
## secchi_value_m -0.4632126 -0.1362918 1.0000000
##
## [[4]]
## SurfTemp DO_top2m secchi_value_m
## SurfTemp 1.00000000 -0.5181376 -0.03582421
## DO_top2m -0.51813760 1.0000000 -0.65695313
## secchi_value_m -0.03582421 -0.6569531 1.00000000
##
## [[5]]
## SurfTemp DO_top2m secchi_value_m
## SurfTemp 1.00000000 -0.2059878 -0.04531095
## DO_top2m -0.20598775 1.0000000 -0.58214002
## secchi_value_m -0.04531095 -0.5821400 1.00000000
##
## [[6]]
## SurfTemp DO_top2m secchi_value_m
## SurfTemp 1.0000000 0.1370694 -0.657333
## DO_top2m 0.1370694 1.0000000 0.122120
## secchi_value_m -0.6573330 0.1221200 1.000000
##
## [[7]]
## SurfTemp DO_top2m secchi_value_m
## SurfTemp 1.0000000 -0.60743337 0.51858592
## DO_top2m -0.6074334 1.00000000 -0.07330771
## secchi_value_m 0.5185859 -0.07330771 1.00000000
##
## [[8]]
## SurfTemp DO_top2m secchi_value_m
## SurfTemp 1.00000000 0.1832488 -0.06765919
## DO_top2m 0.18324880 1.0000000 0.69834147
## secchi_value_m -0.06765919 0.6983415 1.00000000
##
## [[9]]
## SurfTemp DO_top2m secchi_value_m
## SurfTemp 1.0000000 -0.2484490 -0.3364885
## DO_top2m -0.2484490 1.0000000 0.2626871
## secchi_value_m -0.3364885 0.2626871 1.0000000
##
## [[10]]
## SurfTemp DO_top2m secchi_value_m
## SurfTemp 1.00000000 -0.4883733 -0.04288533
## DO_top2m -0.48837333 1.0000000 -0.40283782
## secchi_value_m -0.04288533 -0.4028378 1.00000000
##
## [[11]]
## SurfTemp DO_top2m secchi_value_m
## SurfTemp 1.0000000000 0.02491070 0.0002560108
## DO_top2m 0.0249107003 1.00000000 -0.0583881920
## secchi_value_m 0.0002560108 -0.05838819 1.0000000000
##
## [[12]]
## SurfTemp DO_top2m secchi_value_m
## SurfTemp 1.0000000 -0.6357819 -0.7820548
## DO_top2m -0.6357819 1.0000000 0.2977850
## secchi_value_m -0.7820548 0.2977850 1.0000000
##
## [[13]]
## SurfTemp DO_top2m secchi_value_m
## SurfTemp 1.0000000 -0.6688637 -0.8034888
## DO_top2m -0.6688637 1.0000000 0.5293876
## secchi_value_m -0.8034888 0.5293876 1.0000000
##
## [[14]]
## SurfTemp DO_top2m secchi_value_m
## SurfTemp 1.0000000 -0.1726839 -0.6290911
## DO_top2m -0.1726839 1.0000000 0.4245902
## secchi_value_m -0.6290911 0.4245902 1.0000000
##
## [[15]]
## SurfTemp DO_top2m secchi_value_m
## SurfTemp 1.0000000 -0.8638432 -0.1119818
## DO_top2m -0.8638432 1.0000000 -0.3100758
## secchi_value_m -0.1119818 -0.3100758 1.0000000
##
## [[16]]
## SurfTemp DO_top2m secchi_value_m
## SurfTemp 1.00000000 -0.1672071 -0.02485056
## DO_top2m -0.16720706 1.0000000 -0.18445910
## secchi_value_m -0.02485056 -0.1844591 1.00000000
##
## [[17]]
## SurfTemp DO_top2m secchi_value_m
## SurfTemp 1.00000000 -0.2500811 -0.04864216
## DO_top2m -0.25008105 1.0000000 0.73027646
## secchi_value_m -0.04864216 0.7302765 1.00000000
##
## [[18]]
## SurfTemp DO_top2m secchi_value_m
## SurfTemp 1.0000000 -0.3143425 -0.5200557
## DO_top2m -0.3143425 1.0000000 -0.0473799
## secchi_value_m -0.5200557 -0.0473799 1.0000000
##
## [[19]]
## SurfTemp DO_top2m secchi_value_m
## SurfTemp 1.0000000 -0.1939870 -0.3829905
## DO_top2m -0.1939870 1.0000000 0.3812445
## secchi_value_m -0.3829905 0.3812445 1.0000000
##
## [[20]]
## SurfTemp DO_top2m secchi_value_m
## SurfTemp 1.0000000 -0.6947882 -0.7800586
## DO_top2m -0.6947882 1.0000000 0.4182035
## secchi_value_m -0.7800586 0.4182035 1.0000000
# corr.test(x = select(yearly_bigjoin_zoop, SurfTemp, DO_top2m, secchi_value_m))
Looks like secchi and DO are correlated significantly, but the correlation is weak. I keep both for now.
Run dbRDA. Note that it doesn’t provide species score (capscale() does).
Note that in joining in the environmental data and removing NAs, we’ve lost rows (%) of data compared with the matrix used for producing the previous nmds output.
zoop_dbrda <- map(.x = yearly_bigjoin_zoop,
.f = ~
{
genus_data <- .x %>%
select(any_of(genus_names))
env_data <- .x %>%
select(year, site, park)
dbrda(formula = genus_data ~
SurfTemp + DO_top2m + secchi_value_m, data = .x,
distance = "bray")
}
)
zoop_dbrda
## [[1]]
## Call: dbrda(formula = genus_data ~ SurfTemp + DO_top2m +
## secchi_value_m, data = .x, distance = "bray")
##
## Inertia Proportion Rank
## Total 0.8876 1.0000
## Constrained 0.6563 0.7394 3
## Unconstrained 0.2313 0.2606 1
## Inertia is squared Bray distance
##
## Eigenvalues for constrained axes:
## dbRDA1 dbRDA2 dbRDA3
## 0.5235 0.1277 0.0051
##
## Eigenvalues for unconstrained axes:
## MDS1
## 0.23134
##
##
## [[2]]
## Call: dbrda(formula = genus_data ~ SurfTemp + DO_top2m +
## secchi_value_m, data = .x, distance = "bray")
##
## Inertia Proportion Rank
## Total 0.5512 1.0000
## Constrained 0.3859 0.7001 3
## Unconstrained 0.1653 0.2999 1
## Inertia is squared Bray distance
##
## Eigenvalues for constrained axes:
## dbRDA1 dbRDA2 dbRDA3
## 0.3601 0.0198 0.0060
##
## Eigenvalues for unconstrained axes:
## MDS1
## 0.1653
##
##
## [[3]]
## Call: dbrda(formula = genus_data ~ SurfTemp + DO_top2m +
## secchi_value_m, data = .x, distance = "bray")
##
## Inertia Proportion Rank
## Total 1.6867 1.0000
## Constrained 1.0636 0.6306 3
## Unconstrained 0.6231 0.3694 4
## Inertia is squared Bray distance
##
## Eigenvalues for constrained axes:
## dbRDA1 dbRDA2 dbRDA3
## 0.5770 0.4565 0.0301
##
## Eigenvalues for unconstrained axes:
## MDS1 MDS2 MDS3 MDS4
## 0.4645 0.1087 0.0369 0.0130
##
##
## [[4]]
## Call: dbrda(formula = genus_data ~ SurfTemp + DO_top2m +
## secchi_value_m, data = .x, distance = "bray")
##
## Inertia Proportion Rank RealDims
## Total 1.1869 1.0000
## Constrained 0.6916 0.5827 3 3
## Unconstrained 0.4953 0.4173 4 3
## Inertia is squared Bray distance
##
## Eigenvalues for constrained axes:
## dbRDA1 dbRDA2 dbRDA3
## 0.5072 0.1660 0.0184
##
## Eigenvalues for unconstrained axes:
## MDS1 MDS2 MDS3 iMDS1
## 0.3902 0.0981 0.0140 -0.0070
##
##
## [[5]]
## Call: dbrda(formula = genus_data ~ SurfTemp + DO_top2m +
## secchi_value_m, data = .x, distance = "bray")
##
## Inertia Proportion Rank RealDims
## Total 2.1926 1.0000
## Constrained 0.8669 0.3954 3 3
## Unconstrained 1.3258 0.6046 4 3
## Inertia is squared Bray distance
##
## Eigenvalues for constrained axes:
## dbRDA1 dbRDA2 dbRDA3
## 0.5424 0.3069 0.0175
##
## Eigenvalues for unconstrained axes:
## MDS1 MDS2 MDS3 iMDS1
## 0.9089 0.2864 0.1432 -0.0127
##
##
## [[6]]
## Call: dbrda(formula = genus_data ~ SurfTemp + DO_top2m +
## secchi_value_m, data = .x, distance = "bray")
##
## Inertia Proportion Rank
## Total 0.4462 1.0000
## Constrained 0.3155 0.7071 3
## Unconstrained 0.1307 0.2929 1
## Inertia is squared Bray distance
##
## Eigenvalues for constrained axes:
## dbRDA1 dbRDA2 dbRDA3
## 0.28434 0.02070 0.01047
##
## Eigenvalues for unconstrained axes:
## MDS1
## 0.13067
##
##
## [[7]]
## Call: dbrda(formula = genus_data ~ SurfTemp + DO_top2m +
## secchi_value_m, data = .x, distance = "bray")
##
## Inertia Proportion Rank RealDims
## Total 3.1835 1.0000
## Constrained 1.1665 0.3664 3 3
## Unconstrained 2.0170 0.6336 6 5
## Inertia is squared Bray distance
##
## Eigenvalues for constrained axes:
## dbRDA1 dbRDA2 dbRDA3
## 0.5685 0.3550 0.2429
##
## Eigenvalues for unconstrained axes:
## MDS1 MDS2 MDS3 MDS4 MDS5 iMDS1
## 0.6927 0.5472 0.3748 0.2754 0.1369 -0.0101
##
##
## [[8]]
## Call: dbrda(formula = genus_data ~ SurfTemp + DO_top2m +
## secchi_value_m, data = .x, distance = "bray")
##
## Inertia Proportion Rank RealDims
## Total 2.7138 1.0000
## Constrained 1.5661 0.5771 3 3
## Unconstrained 1.1478 0.4229 6 5
## Inertia is squared Bray distance
##
## Eigenvalues for constrained axes:
## dbRDA1 dbRDA2 dbRDA3
## 1.2462 0.2855 0.0344
##
## Eigenvalues for unconstrained axes:
## MDS1 MDS2 MDS3 MDS4 MDS5 iMDS1
## 0.6335 0.2726 0.1469 0.0881 0.0088 -0.0022
##
##
## [[9]]
## Call: dbrda(formula = genus_data ~ SurfTemp + DO_top2m +
## secchi_value_m, data = .x, distance = "bray")
##
## Inertia Proportion Rank RealDims
## Total 2.042 1.000
## Constrained 0.786 0.385 3 2
## Unconstrained 1.256 0.615 5 4
## Inertia is squared Bray distance
##
## Eigenvalues for constrained axes:
## dbRDA1 dbRDA2 idbRDA1
## 0.4799 0.3082 -0.0022
##
## Eigenvalues for unconstrained axes:
## MDS1 MDS2 MDS3 MDS4 iMDS1
## 0.6791 0.4558 0.1696 0.0313 -0.0801
##
##
## [[10]]
## Call: dbrda(formula = genus_data ~ SurfTemp + DO_top2m +
## secchi_value_m, data = .x, distance = "bray")
##
## Inertia Proportion Rank
## Total 1.4910 1.0000
## Constrained 0.9064 0.6079 3
## Unconstrained 0.5846 0.3921 3
## Inertia is squared Bray distance
##
## Eigenvalues for constrained axes:
## dbRDA1 dbRDA2 dbRDA3
## 0.4274 0.2900 0.1889
##
## Eigenvalues for unconstrained axes:
## MDS1 MDS2 MDS3
## 0.3416 0.2102 0.0328
##
##
## [[11]]
## Call: dbrda(formula = genus_data ~ SurfTemp + DO_top2m +
## secchi_value_m, data = .x, distance = "bray")
##
## Inertia Proportion Rank
## Total 2.2825 1.0000
## Constrained 0.8698 0.3811 3
## Unconstrained 1.4127 0.6189 5
## Inertia is squared Bray distance
##
## Eigenvalues for constrained axes:
## dbRDA1 dbRDA2 dbRDA3
## 0.4500 0.3537 0.0661
##
## Eigenvalues for unconstrained axes:
## MDS1 MDS2 MDS3 MDS4 MDS5
## 0.6765 0.3461 0.1931 0.1182 0.0789
##
##
## [[12]]
## Call: dbrda(formula = genus_data ~ SurfTemp + DO_top2m +
## secchi_value_m, data = .x, distance = "bray")
##
## Inertia Proportion Rank
## Total 1.6117 1.0000
## Constrained 0.9978 0.6191 3
## Unconstrained 0.6139 0.3809 3
## Inertia is squared Bray distance
##
## Eigenvalues for constrained axes:
## dbRDA1 dbRDA2 dbRDA3
## 0.8449 0.1012 0.0517
##
## Eigenvalues for unconstrained axes:
## MDS1 MDS2 MDS3
## 0.5182 0.0828 0.0129
##
##
## [[13]]
## Call: dbrda(formula = genus_data ~ SurfTemp + DO_top2m +
## secchi_value_m, data = .x, distance = "bray")
##
## Inertia Proportion Rank
## Total 1.6630 1.0000
## Constrained 1.2186 0.7328 3
## Unconstrained 0.4444 0.2672 1
## Inertia is squared Bray distance
##
## Eigenvalues for constrained axes:
## dbRDA1 dbRDA2 dbRDA3
## 0.5266 0.4714 0.2206
##
## Eigenvalues for unconstrained axes:
## MDS1
## 0.4444
##
##
## [[14]]
## Call: dbrda(formula = genus_data ~ SurfTemp + DO_top2m +
## secchi_value_m, data = .x, distance = "bray")
##
## Inertia Proportion Rank
## Total 2.6036 1.0000
## Constrained 1.2520 0.4809 3
## Unconstrained 1.3516 0.5191 5
## Inertia is squared Bray distance
##
## Eigenvalues for constrained axes:
## dbRDA1 dbRDA2 dbRDA3
## 0.8986 0.3394 0.0139
##
## Eigenvalues for unconstrained axes:
## MDS1 MDS2 MDS3 MDS4 MDS5
## 0.6494 0.3931 0.2660 0.0400 0.0031
##
##
## [[15]]
## Call: dbrda(formula = genus_data ~ SurfTemp + DO_top2m +
## secchi_value_m, data = .x, distance = "bray")
##
## Inertia Proportion Rank
## Total 2.1370 1.0000
## Constrained 1.4482 0.6777 3
## Unconstrained 0.6888 0.3223 2
## Inertia is squared Bray distance
##
## Eigenvalues for constrained axes:
## dbRDA1 dbRDA2 dbRDA3
## 0.5699 0.5032 0.3752
##
## Eigenvalues for unconstrained axes:
## MDS1 MDS2
## 0.4525 0.2363
##
##
## [[16]]
## Call: dbrda(formula = genus_data ~ SurfTemp + DO_top2m +
## secchi_value_m, data = .x, distance = "bray")
##
## Inertia Proportion Rank
## Total 2.2457 1.0000
## Constrained 0.8303 0.3697 3
## Unconstrained 1.4154 0.6303 4
## Inertia is squared Bray distance
##
## Eigenvalues for constrained axes:
## dbRDA1 dbRDA2 dbRDA3
## 0.6240 0.1191 0.0871
##
## Eigenvalues for unconstrained axes:
## MDS1 MDS2 MDS3 MDS4
## 1.0653 0.2639 0.0813 0.0050
##
##
## [[17]]
## Call: dbrda(formula = genus_data ~ SurfTemp + DO_top2m +
## secchi_value_m, data = .x, distance = "bray")
##
## Inertia Proportion Rank
## Total 1.20722 1.00000
## Constrained 1.17744 0.97534 3
## Unconstrained 0.02977 0.02466 1
## Inertia is squared Bray distance
##
## Eigenvalues for constrained axes:
## dbRDA1 dbRDA2 dbRDA3
## 1.0315 0.1430 0.0029
##
## Eigenvalues for unconstrained axes:
## MDS1
## 0.029774
##
##
## [[18]]
## Call: dbrda(formula = genus_data ~ SurfTemp + DO_top2m +
## secchi_value_m, data = .x, distance = "bray")
##
## Inertia Proportion Rank RealDims
## Total 1.7212 1.0000
## Constrained 0.8016 0.4657 3 3
## Unconstrained 0.9197 0.5343 4 3
## Inertia is squared Bray distance
##
## Eigenvalues for constrained axes:
## dbRDA1 dbRDA2 dbRDA3
## 0.5667 0.1953 0.0396
##
## Eigenvalues for unconstrained axes:
## MDS1 MDS2 MDS3 iMDS1
## 0.5070 0.2411 0.1787 -0.0070
##
##
## [[19]]
## Call: dbrda(formula = genus_data ~ SurfTemp + DO_top2m +
## secchi_value_m, data = .x, distance = "bray")
##
## Inertia Proportion Rank RealDims
## Total 2.2490 1.0000
## Constrained 1.4977 0.6660 3 3
## Unconstrained 0.7512 0.3340 4 3
## Inertia is squared Bray distance
##
## Eigenvalues for constrained axes:
## dbRDA1 dbRDA2 dbRDA3
## 0.9751 0.3537 0.1689
##
## Eigenvalues for unconstrained axes:
## MDS1 MDS2 MDS3 iMDS1
## 0.5483 0.1401 0.0886 -0.0258
##
##
## [[20]]
## Call: dbrda(formula = genus_data ~ SurfTemp + DO_top2m +
## secchi_value_m, data = .x, distance = "bray")
##
## Inertia Proportion Rank
## Total 2.6230 1.0000
## Constrained 1.3699 0.5223 3
## Unconstrained 1.2531 0.4777 4
## Inertia is squared Bray distance
##
## Eigenvalues for constrained axes:
## dbRDA1 dbRDA2 dbRDA3
## 0.7419 0.3926 0.2355
##
## Eigenvalues for unconstrained axes:
## MDS1 MDS2 MDS3 MDS4
## 0.6056 0.3902 0.1808 0.0764
map(.x = zoop_dbrda,
.f = ~ autoplot(.x))
## [[1]]
##
## [[2]]
##
## [[3]]
##
## [[4]]
##
## [[5]]
##
## [[6]]
##
## [[7]]
##
## [[8]]
##
## [[9]]
##
## [[10]]
##
## [[11]]
##
## [[12]]
##
## [[13]]
##
## [[14]]
##
## [[15]]
##
## [[16]]
##
## [[17]]
##
## [[18]]
##
## [[19]]
##
## [[20]]
# https://sites.ualberta.ca/~ahamann/teaching/renr690/Lab9b.pdf
map(.x = zoop_dbrda,
.f = ~ anova(.x))
## 'nperm' >= set of all permutations: complete enumeration.
## Set of permutations < 'minperm'. Generating entire set.
## 'nperm' >= set of all permutations: complete enumeration.
## Set of permutations < 'minperm'. Generating entire set.
## 'nperm' >= set of all permutations: complete enumeration.
## Set of permutations < 'minperm'. Generating entire set.
## Set of permutations < 'minperm'. Generating entire set.
## Set of permutations < 'minperm'. Generating entire set.
## 'nperm' >= set of all permutations: complete enumeration.
## Set of permutations < 'minperm'. Generating entire set.
## 'nperm' >= set of all permutations: complete enumeration.
## Set of permutations < 'minperm'. Generating entire set.
## 'nperm' >= set of all permutations: complete enumeration.
## Set of permutations < 'minperm'. Generating entire set.
## [[1]]
## Permutation test for dbrda under reduced model
## Permutation: free
## Number of permutations: 119
##
## Model: dbrda(formula = genus_data ~ SurfTemp + DO_top2m + secchi_value_m, data = .x, distance = "bray")
## Df SumOfSqs F Pr(>F)
## Model 3 0.65627 0.9456 0.525
## Residual 1 0.23134
##
## [[2]]
## Permutation test for dbrda under reduced model
## Permutation: free
## Number of permutations: 119
##
## Model: dbrda(formula = genus_data ~ SurfTemp + DO_top2m + secchi_value_m, data = .x, distance = "bray")
## Df SumOfSqs F Pr(>F)
## Model 3 0.38592 0.7782 0.6417
## Residual 1 0.16530
##
## [[3]]
## Permutation test for dbrda under reduced model
## Permutation: free
## Number of permutations: 999
##
## Model: dbrda(formula = genus_data ~ SurfTemp + DO_top2m + secchi_value_m, data = .x, distance = "bray")
## Df SumOfSqs F Pr(>F)
## Model 3 1.06362 2.2761 0.075 .
## Residual 4 0.62307
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## [[4]]
## Permutation test for dbrda under reduced model
## Permutation: free
## Number of permutations: 999
##
## Model: dbrda(formula = genus_data ~ SurfTemp + DO_top2m + secchi_value_m, data = .x, distance = "bray")
## Df SumOfSqs F Pr(>F)
## Model 3 0.69159 1.8618 0.139
## Residual 4 0.49527
##
## [[5]]
## Permutation test for dbrda under reduced model
## Permutation: free
## Number of permutations: 999
##
## Model: dbrda(formula = genus_data ~ SurfTemp + DO_top2m + secchi_value_m, data = .x, distance = "bray")
## Df SumOfSqs F Pr(>F)
## Model 3 0.86687 0.8718 0.557
## Residual 4 1.32577
##
## [[6]]
## Permutation test for dbrda under reduced model
## Permutation: free
## Number of permutations: 119
##
## Model: dbrda(formula = genus_data ~ SurfTemp + DO_top2m + secchi_value_m, data = .x, distance = "bray")
## Df SumOfSqs F Pr(>F)
## Model 3 0.31551 0.8049 0.575
## Residual 1 0.13067
##
## [[7]]
## Permutation test for dbrda under reduced model
## Permutation: free
## Number of permutations: 999
##
## Model: dbrda(formula = genus_data ~ SurfTemp + DO_top2m + secchi_value_m, data = .x, distance = "bray")
## Df SumOfSqs F Pr(>F)
## Model 3 1.1665 1.1567 0.277
## Residual 6 2.0170
##
## [[8]]
## Permutation test for dbrda under reduced model
## Permutation: free
## Number of permutations: 999
##
## Model: dbrda(formula = genus_data ~ SurfTemp + DO_top2m + secchi_value_m, data = .x, distance = "bray")
## Df SumOfSqs F Pr(>F)
## Model 3 1.5661 2.7289 0.024 *
## Residual 6 1.1478
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## [[9]]
## Permutation test for dbrda under reduced model
## Permutation: free
## Number of permutations: 999
##
## Model: dbrda(formula = genus_data ~ SurfTemp + DO_top2m + secchi_value_m, data = .x, distance = "bray")
## Df SumOfSqs F Pr(>F)
## Model 3 0.78596 1.0432 0.441
## Residual 5 1.25572
##
## [[10]]
## Permutation test for dbrda under reduced model
## Permutation: free
## Number of permutations: 5039
##
## Model: dbrda(formula = genus_data ~ SurfTemp + DO_top2m + secchi_value_m, data = .x, distance = "bray")
## Df SumOfSqs F Pr(>F)
## Model 3 0.90642 1.5506 0.142
## Residual 3 0.58457
##
## [[11]]
## Permutation test for dbrda under reduced model
## Permutation: free
## Number of permutations: 999
##
## Model: dbrda(formula = genus_data ~ SurfTemp + DO_top2m + secchi_value_m, data = .x, distance = "bray")
## Df SumOfSqs F Pr(>F)
## Model 3 0.8698 1.0262 0.466
## Residual 5 1.4127
##
## [[12]]
## Permutation test for dbrda under reduced model
## Permutation: free
## Number of permutations: 5039
##
## Model: dbrda(formula = genus_data ~ SurfTemp + DO_top2m + secchi_value_m, data = .x, distance = "bray")
## Df SumOfSqs F Pr(>F)
## Model 3 0.99781 1.6255 0.21
## Residual 3 0.61386
##
## [[13]]
## Permutation test for dbrda under reduced model
## Permutation: free
## Number of permutations: 119
##
## Model: dbrda(formula = genus_data ~ SurfTemp + DO_top2m + secchi_value_m, data = .x, distance = "bray")
## Df SumOfSqs F Pr(>F)
## Model 3 1.21861 0.9141 0.4917
## Residual 1 0.44437
##
## [[14]]
## Permutation test for dbrda under reduced model
## Permutation: free
## Number of permutations: 999
##
## Model: dbrda(formula = genus_data ~ SurfTemp + DO_top2m + secchi_value_m, data = .x, distance = "bray")
## Df SumOfSqs F Pr(>F)
## Model 3 1.2520 1.5438 0.174
## Residual 5 1.3516
##
## [[15]]
## Permutation test for dbrda under reduced model
## Permutation: free
## Number of permutations: 719
##
## Model: dbrda(formula = genus_data ~ SurfTemp + DO_top2m + secchi_value_m, data = .x, distance = "bray")
## Df SumOfSqs F Pr(>F)
## Model 3 1.44823 1.4018 0.1056
## Residual 2 0.68876
##
## [[16]]
## Permutation test for dbrda under reduced model
## Permutation: free
## Number of permutations: 999
##
## Model: dbrda(formula = genus_data ~ SurfTemp + DO_top2m + secchi_value_m, data = .x, distance = "bray")
## Df SumOfSqs F Pr(>F)
## Model 3 0.8303 0.7821 0.69
## Residual 4 1.4154
##
## [[17]]
## Permutation test for dbrda under reduced model
## Permutation: free
## Number of permutations: 119
##
## Model: dbrda(formula = genus_data ~ SurfTemp + DO_top2m + secchi_value_m, data = .x, distance = "bray")
## Df SumOfSqs F Pr(>F)
## Model 3 1.17744 13.182 0.1167
## Residual 1 0.02977
##
## [[18]]
## Permutation test for dbrda under reduced model
## Permutation: free
## Number of permutations: 999
##
## Model: dbrda(formula = genus_data ~ SurfTemp + DO_top2m + secchi_value_m, data = .x, distance = "bray")
## Df SumOfSqs F Pr(>F)
## Model 3 0.80156 1.1621 0.408
## Residual 4 0.91966
##
## [[19]]
## Permutation test for dbrda under reduced model
## Permutation: free
## Number of permutations: 999
##
## Model: dbrda(formula = genus_data ~ SurfTemp + DO_top2m + secchi_value_m, data = .x, distance = "bray")
## Df SumOfSqs F Pr(>F)
## Model 3 1.49774 2.6584 0.018 *
## Residual 4 0.75121
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## [[20]]
## Permutation test for dbrda under reduced model
## Permutation: free
## Number of permutations: 999
##
## Model: dbrda(formula = genus_data ~ SurfTemp + DO_top2m + secchi_value_m, data = .x, distance = "bray")
## Df SumOfSqs F Pr(>F)
## Model 3 1.3699 1.4576 0.088 .
## Residual 4 1.2531
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# anova(zoop_dbrda, by = "axis", perm.max = 999) # Won't run bc negative eigenvalues
map(.x = zoop_dbrda,
.f = ~ anova(.x, by = "terms", perm.max = 999))
## 'nperm' >= set of all permutations: complete enumeration.
## Set of permutations < 'minperm'. Generating entire set.
## 'nperm' >= set of all permutations: complete enumeration.
## Set of permutations < 'minperm'. Generating entire set.
## 'nperm' >= set of all permutations: complete enumeration.
## Set of permutations < 'minperm'. Generating entire set.
## Set of permutations < 'minperm'. Generating entire set.
## Set of permutations < 'minperm'. Generating entire set.
## 'nperm' >= set of all permutations: complete enumeration.
## Set of permutations < 'minperm'. Generating entire set.
## 'nperm' >= set of all permutations: complete enumeration.
## Set of permutations < 'minperm'. Generating entire set.
## 'nperm' >= set of all permutations: complete enumeration.
## Set of permutations < 'minperm'. Generating entire set.
## [[1]]
## Permutation test for dbrda under reduced model
## Terms added sequentially (first to last)
## Permutation: free
## Number of permutations: 119
##
## Model: dbrda(formula = genus_data ~ SurfTemp + DO_top2m + secchi_value_m, data = .x, distance = "bray")
## Df SumOfSqs F Pr(>F)
## SurfTemp 1 0.23699 1.0244 0.5083
## DO_top2m 1 0.07993 0.3455 0.8250
## secchi_value_m 1 0.33935 1.4669 0.3167
## Residual 1 0.23134
##
## [[2]]
## Permutation test for dbrda under reduced model
## Terms added sequentially (first to last)
## Permutation: free
## Number of permutations: 119
##
## Model: dbrda(formula = genus_data ~ SurfTemp + DO_top2m + secchi_value_m, data = .x, distance = "bray")
## Df SumOfSqs F Pr(>F)
## SurfTemp 1 0.068080 0.4119 0.6667
## DO_top2m 1 0.273981 1.6575 0.3750
## secchi_value_m 1 0.043856 0.2653 0.7417
## Residual 1 0.165299
##
## [[3]]
## Permutation test for dbrda under reduced model
## Terms added sequentially (first to last)
## Permutation: free
## Number of permutations: 999
##
## Model: dbrda(formula = genus_data ~ SurfTemp + DO_top2m + secchi_value_m, data = .x, distance = "bray")
## Df SumOfSqs F Pr(>F)
## SurfTemp 1 0.07073 0.4541 0.730
## DO_top2m 1 0.54477 3.4973 0.026 *
## secchi_value_m 1 0.44812 2.8769 0.065 .
## Residual 4 0.62307
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## [[4]]
## Permutation test for dbrda under reduced model
## Terms added sequentially (first to last)
## Permutation: free
## Number of permutations: 999
##
## Model: dbrda(formula = genus_data ~ SurfTemp + DO_top2m + secchi_value_m, data = .x, distance = "bray")
## Df SumOfSqs F Pr(>F)
## SurfTemp 1 0.26659 2.1531 0.147
## DO_top2m 1 0.27893 2.2528 0.137
## secchi_value_m 1 0.14606 1.1796 0.366
## Residual 4 0.49527
##
## [[5]]
## Permutation test for dbrda under reduced model
## Terms added sequentially (first to last)
## Permutation: free
## Number of permutations: 999
##
## Model: dbrda(formula = genus_data ~ SurfTemp + DO_top2m + secchi_value_m, data = .x, distance = "bray")
## Df SumOfSqs F Pr(>F)
## SurfTemp 1 0.25184 0.7598 0.553
## DO_top2m 1 0.36009 1.0864 0.401
## secchi_value_m 1 0.25494 0.7692 0.530
## Residual 4 1.32577
##
## [[6]]
## Permutation test for dbrda under reduced model
## Terms added sequentially (first to last)
## Permutation: free
## Number of permutations: 119
##
## Model: dbrda(formula = genus_data ~ SurfTemp + DO_top2m + secchi_value_m, data = .x, distance = "bray")
## Df SumOfSqs F Pr(>F)
## SurfTemp 1 0.281129 2.1515 0.2750
## DO_top2m 1 0.016399 0.1255 0.9333
## secchi_value_m 1 0.017985 0.1376 0.8917
## Residual 1 0.130668
##
## [[7]]
## Permutation test for dbrda under reduced model
## Terms added sequentially (first to last)
## Permutation: free
## Number of permutations: 999
##
## Model: dbrda(formula = genus_data ~ SurfTemp + DO_top2m + secchi_value_m, data = .x, distance = "bray")
## Df SumOfSqs F Pr(>F)
## SurfTemp 1 0.41064 1.2216 0.283
## DO_top2m 1 0.45840 1.3636 0.165
## secchi_value_m 1 0.29747 0.8849 0.627
## Residual 6 2.01697
##
## [[8]]
## Permutation test for dbrda under reduced model
## Terms added sequentially (first to last)
## Permutation: free
## Number of permutations: 999
##
## Model: dbrda(formula = genus_data ~ SurfTemp + DO_top2m + secchi_value_m, data = .x, distance = "bray")
## Df SumOfSqs F Pr(>F)
## SurfTemp 1 0.74675 3.9037 0.019 *
## DO_top2m 1 0.56529 2.9551 0.041 *
## secchi_value_m 1 0.25404 1.3280 0.293
## Residual 6 1.14775
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## [[9]]
## Permutation test for dbrda under reduced model
## Terms added sequentially (first to last)
## Permutation: free
## Number of permutations: 999
##
## Model: dbrda(formula = genus_data ~ SurfTemp + DO_top2m + secchi_value_m, data = .x, distance = "bray")
## Df SumOfSqs F Pr(>F)
## SurfTemp 1 0.26049 1.0372 0.411
## DO_top2m 1 0.31439 1.2518 0.364
## secchi_value_m 1 0.21108 0.8405 0.572
## Residual 5 1.25572
##
## [[10]]
## Permutation test for dbrda under reduced model
## Terms added sequentially (first to last)
## Permutation: free
## Number of permutations: 5039
##
## Model: dbrda(formula = genus_data ~ SurfTemp + DO_top2m + secchi_value_m, data = .x, distance = "bray")
## Df SumOfSqs F Pr(>F)
## SurfTemp 1 0.32243 1.6547 0.159
## DO_top2m 1 0.27039 1.3876 0.330
## secchi_value_m 1 0.31360 1.6094 0.170
## Residual 3 0.58457
##
## [[11]]
## Permutation test for dbrda under reduced model
## Terms added sequentially (first to last)
## Permutation: free
## Number of permutations: 999
##
## Model: dbrda(formula = genus_data ~ SurfTemp + DO_top2m + secchi_value_m, data = .x, distance = "bray")
## Df SumOfSqs F Pr(>F)
## SurfTemp 1 0.38676 1.3689 0.291
## DO_top2m 1 0.26444 0.9359 0.399
## secchi_value_m 1 0.21860 0.7737 0.566
## Residual 5 1.41272
##
## [[12]]
## Permutation test for dbrda under reduced model
## Terms added sequentially (first to last)
## Permutation: free
## Number of permutations: 5039
##
## Model: dbrda(formula = genus_data ~ SurfTemp + DO_top2m + secchi_value_m, data = .x, distance = "bray")
## Df SumOfSqs F Pr(>F)
## SurfTemp 1 0.41025 2.0049 0.178
## DO_top2m 1 0.44708 2.1849 0.157
## secchi_value_m 1 0.14048 0.6866 0.607
## Residual 3 0.61386
##
## [[13]]
## Permutation test for dbrda under reduced model
## Terms added sequentially (first to last)
## Permutation: free
## Number of permutations: 119
##
## Model: dbrda(formula = genus_data ~ SurfTemp + DO_top2m + secchi_value_m, data = .x, distance = "bray")
## Df SumOfSqs F Pr(>F)
## SurfTemp 1 0.46971 1.0570 0.5167
## DO_top2m 1 0.28915 0.6507 0.7750
## secchi_value_m 1 0.45975 1.0346 0.4500
## Residual 1 0.44437
##
## [[14]]
## Permutation test for dbrda under reduced model
## Terms added sequentially (first to last)
## Permutation: free
## Number of permutations: 999
##
## Model: dbrda(formula = genus_data ~ SurfTemp + DO_top2m + secchi_value_m, data = .x, distance = "bray")
## Df SumOfSqs F Pr(>F)
## SurfTemp 1 0.76880 2.8440 0.053 .
## DO_top2m 1 0.43154 1.5964 0.233
## secchi_value_m 1 0.05167 0.1911 0.944
## Residual 5 1.35160
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## [[15]]
## Permutation test for dbrda under reduced model
## Terms added sequentially (first to last)
## Permutation: free
## Number of permutations: 719
##
## Model: dbrda(formula = genus_data ~ SurfTemp + DO_top2m + secchi_value_m, data = .x, distance = "bray")
## Df SumOfSqs F Pr(>F)
## SurfTemp 1 0.39834 1.1567 0.35417
## DO_top2m 1 0.56245 1.6332 0.06806 .
## secchi_value_m 1 0.48744 1.4154 0.17778
## Residual 2 0.68876
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## [[16]]
## Permutation test for dbrda under reduced model
## Terms added sequentially (first to last)
## Permutation: free
## Number of permutations: 999
##
## Model: dbrda(formula = genus_data ~ SurfTemp + DO_top2m + secchi_value_m, data = .x, distance = "bray")
## Df SumOfSqs F Pr(>F)
## SurfTemp 1 0.27144 0.7671 0.460
## DO_top2m 1 0.42127 1.1905 0.361
## secchi_value_m 1 0.13758 0.3888 0.797
## Residual 4 1.41543
##
## [[17]]
## Permutation test for dbrda under reduced model
## Terms added sequentially (first to last)
## Permutation: free
## Number of permutations: 119
##
## Model: dbrda(formula = genus_data ~ SurfTemp + DO_top2m + secchi_value_m, data = .x, distance = "bray")
## Df SumOfSqs F Pr(>F)
## SurfTemp 1 0.39710 13.3370 0.01667 *
## DO_top2m 1 0.07743 2.6007 0.21667
## secchi_value_m 1 0.70291 23.6081 0.03333 *
## Residual 1 0.02977
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## [[18]]
## Permutation test for dbrda under reduced model
## Terms added sequentially (first to last)
## Permutation: free
## Number of permutations: 999
##
## Model: dbrda(formula = genus_data ~ SurfTemp + DO_top2m + secchi_value_m, data = .x, distance = "bray")
## Df SumOfSqs F Pr(>F)
## SurfTemp 1 0.17146 0.7458 0.580
## DO_top2m 1 0.44956 1.9553 0.188
## secchi_value_m 1 0.18054 0.7852 0.549
## Residual 4 0.91966
##
## [[19]]
## Permutation test for dbrda under reduced model
## Terms added sequentially (first to last)
## Permutation: free
## Number of permutations: 999
##
## Model: dbrda(formula = genus_data ~ SurfTemp + DO_top2m + secchi_value_m, data = .x, distance = "bray")
## Df SumOfSqs F Pr(>F)
## SurfTemp 1 0.28082 1.4953 0.204
## DO_top2m 1 0.69736 3.7133 0.028 *
## secchi_value_m 1 0.51956 2.7665 0.019 *
## Residual 4 0.75121
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## [[20]]
## Permutation test for dbrda under reduced model
## Terms added sequentially (first to last)
## Permutation: free
## Number of permutations: 999
##
## Model: dbrda(formula = genus_data ~ SurfTemp + DO_top2m + secchi_value_m, data = .x, distance = "bray")
## Df SumOfSqs F Pr(>F)
## SurfTemp 1 0.57885 1.8477 0.056 .
## DO_top2m 1 0.40356 1.2882 0.270
## secchi_value_m 1 0.38747 1.2368 0.290
## Residual 4 1.25312
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
The next section previously re-ran NMDS plots using the data subsets fed into the dbRDA. I removed it for now to avoid complicating this document further while analyses were in flux.